package cn.fl.institution.service;

import cmm.mid.core.framework.dto.DataResultDTO;
import cmm.mid.core.framework.page.KeyValueVO;
import cn.cmm.base.framework.exception.BaseException;
import cn.fl.institution.condition.PrjInsRedmInterfaceInfoQC;
import cn.fl.institution.vo.PrjInsRedmInterfaceInfoVO;

import java.util.List;

/**
 * @Description: 资管项目赎回表 客户端服务层接口
 * @Description: 持久层方法名称前缀：新增：insert* 删除：delete* 修改：update* 批量：batch* 查询对象：select* get* find* 查询集合：select*
 * @Description: 业务层方法名称前缀：新增：add* 删除：remove* 修改：modify* 查询对象：select* get* 批量：batch* 查询集合：search*
 */
public interface IPrjInsRedmInterfaceInfoService {


    /**
     * 查询资方赎回接口信息列表
     * @param qc
     * @return
     * @throws BaseException
     */
    List<PrjInsRedmInterfaceInfoVO> selectInsRedmInterfaceInfoList(PrjInsRedmInterfaceInfoQC qc)throws BaseException;

    /**
     * 新增
     * @param entity
     * @return
     */
    Long addPrjInsRedmInterfaceInfoVO(PrjInsRedmInterfaceInfoVO entity) throws BaseException;

    /**
     * 修改
     * @param entity
     * @return
     */
    boolean modifyPrjInsRedmInterfaceInfoVO(PrjInsRedmInterfaceInfoVO entity) throws BaseException;

    /**
     * 获取资管接口信息机构配置 是否展示接口信息
     * @param entity
     * @return
     */
    int getPrjInsRedmInterfaceConfig(String insCode);

    /**
     * 获取唯一对象
     * @param id 主键
     * @return 对象DTO
     */
    PrjInsRedmInterfaceInfoVO selectById(Long id)throws BaseException;

    /**
     * 试算接口 SKD004
     *
     * @param qc
     * @return
     */
    DataResultDTO calculation(PrjInsRedmInterfaceInfoQC qc);




    /**
     * 贷款代偿 SKD006
     *
     * @param qc
     */
    DataResultDTO applyFundClear(PrjInsRedmInterfaceInfoQC qc);


    /**
     * 订单取回 SKD007
     *
     * @param qc
     */
    DataResultDTO cancelOrder(PrjInsRedmInterfaceInfoQC qc);


    /**
     * 获取机构回购主体
     * @param entity
     * @return
     */
    List<KeyValueVO> getSuretySubjectCodeList(String insCode);


    /**
     * 获取资管机构赎回配置
     * @param entity
     * @return
     */
    int getPrjInsRedmConfig(String insCode,String cfgCd);

}
